package com.gengzp.rpc.core;

import java.util.List;

/**
 * @ClassName RpcCoreFunc
 * @Description
 * @Author gengzp
 * @Date 2025/6/1 0:28
 */
public interface RpcCoreFunc {

    /**
     * 根据服务名称查询在线的实例url集合
     *
     * @param serviceName 服务名
     * @return 在线实例url集合
     */
    List<String> searchOnlineServiceUrlByName(String serviceName);

    /**
     * 获取当前服务名
     *
     * @return 服务名
     */
    String searchCurrentServiceName();

    /**
     * 负载均衡获取远程服务实例url
     *
     * @param urls 所有实例url
     * @return 负载均衡计算后得到的远程服务实例url
     */
    String loadBalanceRemoteServiceUrl(List<String> urls);

    /**
     * 根据接口获取bean实例
     *
     * @param interfaceClass 接口类
     * @return bean 实例
     */
    Object getBeanByInterfaceClass(Class<?> interfaceClass);

}
